package com.yn.common.utils;

import java.math.BigDecimal;

/**
 * 金额工具类
 * @author wanglingqinag
 * @date 2020/1/21
 */
public class MoneyUtils {

    private MoneyUtils() { }

    /**
     * 金额 元转分
     * @param yuan double 元
     * @return long 分
     */
    public static long yuan2fen(double yuan) {
        return BigDecimalUtils.amplify2int(yuan, 2);
    }

    /**
     * 金额 元转分
     * @param yuan BigDecimal 元
     * @return int 分
     */
    public static int yuan2fen(BigDecimal yuan) {
        return BigDecimalUtils.amplify2int(yuan, 2);
    }


    /**
     * 金额 分转元
     * @param cent 分
     * @return double 元
     */
    public static double fen2yuan(long cent) {
        return BigDecimalUtils.shrink2double(cent, 2);
    }

    /**
     * 金额 分转元
     * @param cent 分
     * @return BigDecimal 元
     */
    public static BigDecimal fen2yuan(int cent) {
        return BigDecimalUtils.shrink2BigDecimal(cent, 2);
    }

    /**
     * 字符串金额 分转元
     * @param cent 分 （字符串格式为整型）
     * @return double 元
     */
    public static double fen2yuan(String cent) {
        long fen = Long.parseLong(cent);
        return BigDecimalUtils.shrink2double(fen, 2);
    }

    /**
     * 比较金额相等
     * @param amount1 金额1 单位元
     * @param amount2 金额2 单位元
     * @return 相等返回true 不相等返回false
     */
    public static Boolean equal(double amount1, double amount2) {
        return Math.abs(amount1 - amount2) < Double.MIN_NORMAL;
    }

    /**
     * 金额不相等
     * @param amount1 金额1 单位元
     * @param amount2 金额2 单位元
     * @return 不相等返回true 相等返回false
     */
    public static Boolean notEqual(double amount1, double amount2) {
        return Math.abs(amount1 - amount2) >= Double.MIN_NORMAL;
    }
}
